/**
 * @file market_order.cpp
 * @brief 市场订单相关数据结构的实现
 * 
 * @details 该文件实现了市场订单（MarketOrder）结构体的方法，
 * 主要包括将订单转换为字符串表示的功能。
 * 
 * @author 原作者
 * @date 2023
 */

#include "market_order.h"

namespace Trading {
  /**
   * @brief 将市场订单转换为字符串表示的实现
   * 
   * @details 生成市场订单的详细文本表示，包括订单ID、侧向、价格、数量、优先级
   * 以及前后订单的ID。这个方法主要用于调试和日志记录，帮助开发者和系统管理员
   * 监控和分析订单簿的状态。
   * 
   * @return 订单的字符串表示，格式为 "MarketOrder[oid:xxx side:xxx price:xxx qty:xxx prio:xxx prev:xxx next:xxx]"
   */
  auto MarketOrder::toString() const -> std::string {
    std::stringstream ss;
    ss << "MarketOrder" << "["
       << "oid:" << orderIdToString(order_id_) << " "
       << "side:" << sideToString(side_) << " "
       << "price:" << priceToString(price_) << " "
       << "qty:" << qtyToString(qty_) << " "
       << "prio:" << priorityToString(priority_) << " "
       << "prev:" << orderIdToString(prev_order_ ? prev_order_->order_id_ : OrderId_INVALID) << " "
       << "next:" << orderIdToString(next_order_ ? next_order_->order_id_ : OrderId_INVALID) << "]";

    return ss.str();
  }
}
